The present invention relates to collaborative authoring using software applications, and more particularly, to fine-grained intra-document object locking in collaborative authoring.
Collaborative authoring refers to multiple users using software applications to author or edit a common project or document. Some software applications, such as common word processing and spreadsheet applications, typically support a single user, such that each user uses a separate instance of the application. Other software applications (e.g., SIMATIC STEP7) support cooperative work on the same data or project, typically for 2-10 users at a time. For a larger number of users, a collaboration server is commonly used to support collaborative authoring. A collaboration server is typically implemented using specific software that manages projects or documents to prevent inconsistent changes to the projects or documents by different users or software applications.
FIG. 1 illustrates a conventional collaboration server system. As illustrated in FIG. 1, a collaboration server 102 typically stores documents associated with various types of applications 104, 106, and 108 as objects 110 and 112. Applications 104 and 106 are different versions of the same type of application (type A), and application 108 is a different type of application (type B). In FIG. 1, each of the applications 104, 106, and 108 supports multiple users. Each type of application typically has a fine-grained tightly coupled object model, which represents documents for that type of application. The complete object model or document of an application is modeled as an object, such as a Binary Large Object (BLOB), in the collaboration server. In FIG. 1, object 110 represents a document associated with application A and object 112 represents a document associated with application B. Accordingly, object 110 can be opened as a document in applications 104 and 106, and object 112 can be opened as a different type of document in application 108. The collaboration server 102 typically has administrative/generic applications 114, which allow for browsing and organization of objects 110 and 112 on the collaboration server 102.
Since each object 110 and 112 on the collaboration server 102 represents a complete object model or document, the granularity in the collaboration server 102 is the whole document. Accordingly, when an application authors or edits a document, the object representing the entire document is locked at the collaboration server 102. When an object is locked at the collaboration server 102, other applications may read the corresponding document, but cannot edit or author the document. For example, if object 110 is locked by application 104, users 1-3 can edit the corresponding document using application 104, but users 4-6 have no write access to the document. Thus, since the whole object is locked, the possibility of concurrent authoring is significantly reduced.
One solution to allow additional concurrent authoring is to model sub-objects within a document as individual objects in the collaboration server. In this case, each object (BLOB) in the collaboration server represents a document that is a portion of an overall document associated with an application type. Each object is locked at the collaboration server when the corresponding document portion is being edited by an application. This improves the granularity in the collaboration server to predetermined document portions. However, the granularity of the document portions is not variable, and concurrent authoring of a document portion by multiple applications may still be inefficient. Furthermore, exposing the complete object model to the collaboration server typically results in performance penalties, as well as the risk of object model inconsistencies. This happens especially when other applications or the administrative/generic applications modify the data in the collaboration server at the same time.
Another possible solution to allow additional concurrent authoring is to allow various applications to author and edit a common document with no locks. In this case, when an application writes data back to the collaboration server, a comparison and conflict detection is performed to detect any conflicts between versions of a document. However, detected conflicts typically require user interaction to resolve, making this solution inefficient.